package mainService;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.StringTokenizer;

/**
 * I Parametri di un Servizio HTTP, gestito con una mappa chiave(etichetta del
 * parametro)-valore
 * 
 * @author Mattia Grecchi, Daniel Procop
 */
public class ServiceParams {

	private HashMap<String, String> params = new HashMap<String, String>();

	
	public ServiceParams(String params) {
		loadParams(params);
	}

	/**
	 * Carica una stringa contenente i parametri di una URL e memorizza tutti i
	 * parametri presenti in una mappa. I parametri sono divisi da &.
	 * L'etichetta e il valore sono divisi da un =.
	 * 
	 * @param params
	 */
	public void loadParams(String params) {
		StringTokenizer tokenizer = new StringTokenizer(params, "=&");
		while (tokenizer.hasMoreTokens()) {
			String parameter = tokenizer.nextToken();
			if (tokenizer.hasMoreTokens()) {
				String value = tokenizer.nextToken();
				this.params.put(parameter, value);
			}
		}
	}

	/**
	 * Aggiunge un parametro alla mappa.
	 * 
	 * @param param
	 * @param value
	 */
	public void addParam(String param, String value) {
		params.put(param, value);
	}

	/**
	 * Recupera il valore del Parametro.
	 * 
	 * @param parameter
	 * @return valore in stringa
	 */
	public String getValue(String parameter) {
		try {
			String value = URLDecoder.decode(params.get(parameter), "UTF-8");
			return value;
		} catch (UnsupportedEncodingException e) {
			throw new RuntimeException(e.getMessage());
		}
	}
}
